"""
Author : Mr.Sun
DateTime : 2022/10/24.17:08
FileName : positionSelect.py
Desc : 
"""
import os
import pandas as pd

project_dir = os.path.dirname(os.path.dirname(__file__))

# <文件路径>
fileName = os.path.join(project_dir, 'files/2023年度招考职位.xls')
SheetNames = ["中央党群机关", "中央国家行政机关（本级）", "中央国家行政机关省级以下直属机构", "中央国家行政机关参照公务员法管理事业单位"]

# <筛选条件>
optMajor = '(网络工程|计算机类)'  # 专业
optEducation = '(大专及以上|本科及以上|本科或硕士研究生|大专或本科|仅限本科)'  # 学历
optPolity = ['不限', '中共党员或共青团员', '中共党员']  # 政治面貌
optWorkyears = "无限制"  # 基层工作最低年限
optWorkExperience = "无限制"  # 服务基层项目工作经历

'''
【一些特殊备注】
(1)限2020年和2021年应届毕业生(√)
(2)2021年毕业的高校毕业生（高等教育各阶段均需取得相应学历学位）(×)
(3)高校应届毕业生（高等教育各阶段均需取得相应学历学位）(×)
(4)2021年应届高校毕业生，本单位不提供宿舍，在本单位最低服务年限为5年(×)
(5)限普通高等学校2021年应届毕业生；2.各职位明确的专业类目录按教育部《普通高等学校本科专业目录（2020年版）》确定，
报考人员最高学历专业须为相应职位明确的专业类目录下设专业（毕业证书、学位证书均为同一专业，含研究生专业对应的一级学科专业）(×)
【排除条件】
(1)有"2021"+有"应届"+无"2020"→→→不要
(2)有"2021"+有"应届"+有"2020年版"→→→不要
(3)有"2021"+无"应届"→→→不要
(4)无"2021"+有"应届"→→→不要
'''

# <文件读取及刷选>
resultData = pd.DataFrame()
print("【考试类别】  " + "【招考人数】  " + "【专业】  " + "【学历】  " + "【政治面貌】  " + "【基层工作最低年限】  " + "【服务基层项目工作经历】")
for sheet_name in SheetNames:
    ExcelData = pd.read_excel(fileName, sheet_name)  # 文件读取
    print(ExcelData)

    # 没有'备注'(na)是一定要的(无限制)——一次取反:na=False;二次取反:na=True
    #
    # optMark2 = (ExcelData['备注'].str.contains(r'\S*2021\S*', na=False)) & (
    #     ExcelData['备注'].str.contains(r'\S*应届\S*', na=False)) & (ExcelData['备注'].str.contains(r'\S*2020年版\S*', na=False))

    # optMark4 = (ExcelData['备注'].str.contains('应届', na=False)) & (~(ExcelData['备注'].str.contains('2021', na=True)))
    # 女性 不要
    optMark5 = (ExcelData['备注'].str.contains('女性', na=False))
    # 户籍不要
    optMark7 = (ExcelData['备注'].str.contains('户籍', na=False))
    optMark8 = (ExcelData['备注'].str.contains('生源', na=False))

    # 2023 应届不要
    optMark1 = (ExcelData['备注'].str.contains('2023', na=False)) & (ExcelData['备注'].str.contains('届', na=False))
    optMark2 = (ExcelData['备注'].str.contains('应届', na=False)) & (ExcelData['备注'].str.contains('高等院校', na=False))
    optMark4 = (ExcelData['备注'].str.contains('应届', na=False)) & (ExcelData['备注'].str.contains('高校', na=False))

    # 英语四级 六级不要
    optMark3 = (ExcelData['备注'].str.contains('英语', na=False)) & (ExcelData['备注'].str.contains('四级', na=False))
    optMark6 = (ExcelData['备注'].str.contains('英语', na=False)) & (ExcelData['备注'].str.contains('六级', na=False))

    AppJob = ExcelData[(ExcelData['专业'].str.contains(optMajor)) & (ExcelData['学历'].str.contains(optEducation)) & (
        ExcelData['政治面貌'].isin(optPolity))
                       & (ExcelData['基层工作最低年限'] == optWorkyears) & (ExcelData['服务基层项目工作经历'] == optWorkExperience)
                       & ((~optMark1) & (~optMark2) & (~optMark3) & (~optMark4) & (~optMark5) & (~optMark6)
                          & (~optMark7) & (~optMark8))]

    if len(resultData.columns) == 0:
        resultData = AppJob
    else:
        resultData = resultData.append(AppJob, ignore_index=False, sort=False)  # 拼接
        # resultData=pd.concat([resultData,AppJob],axis=0,join='outer',ignore_index=False,sort=False)

    for n in range(AppJob.shape[0]):  # 展示
        RowItem = AppJob.iloc[n]
        # print(RowItem["考试类别"] + "  " + str(RowItem["招考人数"]) + "  " + RowItem["专业"] + "  " + RowItem["学历"] + "  " +
        #       RowItem["政治面貌"] + "  " +
        #       RowItem["基层工作最低年限"] + "  " + RowItem["服务基层项目工作经历"])

# <储存结果>
result_file = os.path.join(project_dir, 'files/2023年度招考职位_result.xls')
resultData.to_excel(result_file, index=False)
